'1988 by Leuolya-SOft 'Public Domain 'Sollte dir das Programm gefallen 'ist es erlaubt,dem Programmier 'Annerkennung in Form von 'Geld zu schicken. 'Adresse: 'Roger Leu 'Lenggisergasse 3 'CH-8645 Jona/SG ' Danke ! GOTO Pb f1: IF fa(1)=-100 THEN fa(1)=100:fa(2)=0:fa(3)=300:fa(4)=2:fa(5)=400:fa(6)=4:PALETTE 3,0.1,0.5,0.9:RETURN fa(1)=-100:fa(2)=1:fa(3)=800:fa(4)=6:fa(5)=0:fa(6)=0:PALETTE 3,0.6,0.1,0.1 RETURN Jo: IF xg=xp AND yg=yp THEN GOTO ph w2: IF wa>gs THEN wa=0:GOSUB Ge ri=0:wa=wa+1 fe=STRIG(3) IF STICK(2)=-1 AND STICK(3)=0 THEN ri=1:RETURN IF STICK(2)=1 AND STICK(3)=0 THEN ri=2 :RETURN IF STICK(3)=-1 AND STICK(2)=0 THEN ri=3:RETURN IF STICK(3)=1 AND STICK(2)=0 THEN ri=4 RETURN Ge: bw1=0 IF xp>xg OR bw=1 THEN IF f$(yg,xg+1)<>"1" THEN GOSUB rp:xg=xg+1:bw=1:bw1=1 IF xp"1" THEN GOSUB rp:xg=xg-1:bw=2:bw1=1 IF yp>yg OR bw=3 THEN IF f$(yg+1,xg)<>"1" THEN GOSUB rp:yg=yg+1:bw=3:bw1=1 IF yp"1" THEN GOSUB rp:yg=yg-1:bw=4:bw1=1 IF bw1<>0 THEN GOTO we5 t=INT(4*RND(1)+1) IF t=1 THEN IF f$(yg,xg+1)<>"1" THEN GOSUB rp:xg=xg+1:bw1=1 IF t=2 THEN IF f$(yg,xg-1)<>"1" THEN GOSUB rp:xg=xg-1:bw1=1 IF t=3 THEN IF f$(yg+1,xg)<>"1" THEN GOSUB rp:yg=yg+1:bw1=1 IF t=4 THEN IF f$(yg-1,xg)<>"1" THEN GOSUB rp:yg=yg-1:bw1=1 we5: IF bw1<>0 THEN PUT(110+xg*20,10+yg*10),g%,PSET IF xg=xp AND yg=yp THEN GOTO ph RETURN rp: IF f$(yg,xg)="0" THEN PUT(110+xg*20,10+yg*10),p%,PSET:RETURN IF f$(yg,xg)="2" THEN PUT(110+xg*20,10+yg*10),Pi%,PSET:RETURN IF f$(yg,xg)="5" THEN PUT(110+xg*20,10+yg*10),l%,PSET:RETURN IF f$(yg,xg)="8" THEN PUT(110+xg*20,10+yg*10),Gi%,PSET:RETURN IF ASC(f$(yg,xg))>96 AND ASC(f$(yg,xg))<108 THEN PUT(110+xg*20,10+yg*10),Fr%,PSET IF f$(yg,xg)="3" THEN PUT(110+xg*20,10+yg*10),l%,PSET:f$(yg,xg)="5" RETURN ph: l(pl)=l(pl)-1:TIMER OFF IF l(pl)=0 THEN GOSUB hisco GOSUB mu:GOTO An St: a$=f$(yp,xp) IF a$="7" THEN sc(pl)=sc(pl)-100:LOCATE pp(pl):PRINT p$;sc(pl):f$(yp,xp)="5":GOTO we3 IF a$="0" THEN SOUND 100,0.5:sc(pl)=sc(pl)+10:LOCATE pp(pl),1:PRINT"Punkte:"sc(pl) f$(yp,xp)="5":pil=pil-1 IF pil=0 THEN PUT(110+xp*20,10+yp*10),l%,PSET:GOTO Ft GOTO we3 END IF IF a$="2" THEN f$(yp,xp)="5":sc(pl)=sc(pl)+fa(1):l(pl)=l(pl)-fa(2) LOCATE pp(pl),1:PRINT p$;sc(pl):LOCATE pli(pl),1:PRINT l$;l(pl) IF l(pl)=0 THEN TIMER OFF:GOSUB hisco:GOSUB mu:GOTO An f$(yp,xp)="5" SOUND fa(3),fa(4):SOUND fa(5),fa(6) GOTO we3 END IF IF a$="8" THEN FOR t2=1 TO 10:SOUND 100+t2*20,1:GOSUB Ge:NEXT t2:f$(yp,xp)="5" IF ASC(a$)<97 OR ASC(a$)>108 THEN GOTO we3 FOR t=1 TO 10:SOUND 400+10*t,1:NEXT t PUT (110+xp*20,10+yp*10),Fr%,PSET:xp=F7(ASC(a$)-97+1,0):yp=F7(ASC(a$)-97+1,1):PUT(110+xp*20,10+yp*10),P0%,PSET:ri=0 we3: IF ri=1 THEN PUT(110+xp*20,10+yp*10),P2%,PSET IF ri=2 THEN PUT(110+xp*20,10+yp*10),P0%,PSET IF ri=3 THEN PUT(110+xp*20,10+yp*10),P3%,PSET IF ri=4 THEN PUT(110+xp*20,10+yp*10),P1%,PSET we: GOSUB Jo xp2=xp:yp2=yp IF ri=1 THEN xp=xp-1 IF ri=2 THEN xp=xp+1 IF ri=3 THEN yp=yp-1 IF ri=4 THEN yp=yp+1 IF xp>24 THEN xp=24 IF xp<0 THEN xp=0 IF yp>20 THEN yp=20 IF yp<0 THEN yp=0 IF fe=-1 THEN LOCATE 20,1:PRINT"PAUSE":FOR t=1 TO 1000:NEXT:WHILE STRIG(3)<>-1:WEND:FOR t=1 TO 1000:NEXT:LOCATE 20,1:PRINT" " IF f$(yp,xp)="1" OR ri=0 THEN xp=xp2:yp=yp2: GOTO we IF ASC(f$(yp2,xp2))>96 AND ASC(f$(yp2,xp2))<109 THEN PUT(110+xp2*20,10+yp2*10),Fr%,PSET:GOTO St PUT(110+xp2*20,10+yp2*10),l%,PSET GOTO St Ft: TIMER OFF LOCATE 17,1:PRINT" FERTIG ! " LOCATE 19,1:PRINT"Press Button" WHILE STRIG(3)<>-1 WEND GOSUB mu lv(pl)=lv(pl)+1 IF pl=1 THEN pl=2 :ELSE pl=1 IF sp=1 THEN pl=1 GOTO An Tb: COLOR 5,4 GOSUB fd IF leu=0 THEN leu=1:GOSUB Bi CLS LINE(10,30)-(15,80),5,bf CIRCLE(50,30),40,5,-0.78,-5.5 PAINT(40,30),5,5 CIRCLE(52,20),5,6 PAINT(52,20),6,6 FOR t=0 TO 4 LINE(80,80)-(110+t,20),5 NEXT t FOR t=0 TO 4 LINE(110+t,20)-(150,80),5 NEXT LINE(95,50)-(130,50),5 CIRCLE(210,50),50,5,,,0.6 winkel1=6.28:winkel2=0 WHILE winkel2<0.6 winkel1=winkel1-0.05:winkel2=winkel2+0.05 CIRCLE(210,50),50,5,-winkel2,-winkel1,0.6 CIRCLE(210,50),50,4,-winkel1,-winkel2,0.6 WEND CIRCLE(210,50),50,5,-winkel2,-winkel1,0.6 PAINT(200,50),5,5 CIRCLE(212,35),7,6,,,0.5 PAINT(212,35),6,6 a$=" is back !!":GOSUB sp COLOR 1,4:a$="Ein Programm von Leuolya-Soft" LOCATE 1,51:PRINT a$:a=0 FOR t=1 TO 100 SCROLL(400,a)-(639,a+10),0,1:a=a+1 NEXT a=400 FOR t=1 TO 385 SCROLL(a,100)-(a+239,110),-1,0:a=a-1 NEXT GOSUB P1 ON MENU GOSUB M2 MENU ON scrollen1: IF ld=1 THEN ld=0:za=0:GOSUB laden za=za+1 FOR t1=1 TO 8 FOR t=0 TO 10 SCROLL(12+t*60,108)-(12+t*60+19,240),0,-1-INT(t/3) NEXT t NEXT t1 FOR t1=1 TO 8 FOR t=0 TO 10 SCROLL(12+t*60,108)-(12+t*60+19,240),0,1+INT(t/3) NEXT t NEXT t1 IF za=5 AND ld=0 THEN COLOR 1,4:a$=" He,du da,warum spielst du noch nicht? " GOSUB sp END IF IF za=10 THEN COLOR 5,4:a$=" is back !! " za=0:GOSUB sp END IF GOTO scrollen1 sp: FOR t=1 TO LEN(a$) LOCATE 7,30:PRINT(RIGHT$(a$,t)) FOR t1=1 TO 200:NEXT NEXT RETURN Lesen: FOR t=0 TO 20 READ a$ FOR t1=0 TO 24 f$(t,t1)=MID$(a$,t1+1,1) NEXT t1 NEXT t Entwickler: za=0 FOR t=0 TO 20 FOR t1=0 TO 24 IF f$(t,t1)="0" THEN PUT(110+t1*20,10+t*10),p%,PSET:GOTO we4 IF f$(t,t1)="1" THEN PUT(110+t1*20,10+t*10),W%,PSET:GOTO we4 IF f$(t,t1)="2" THEN PUT(110+t1*20,10+t*10),Pi%,PSET:GOTO we4 IF f$(t,t1)="3" THEN PUT(110+t1*20,10+t*10),g%,PSET:xg=t1:yg=t IF f$(t,t1)="4" THEN PUT(110+t1*20,10+t*10),P0%,PSET:xp=t1:yp=t:f$(t,t1)="0" IF f$(t,t1)="7" THEN PUT(110+t1*20,10+t*10),g%,PSET:GOTO we4 IF ASC(f$(t,t1))>96 AND ASC(f$(t,t1))<108 THEN PUT(110+t1*20,10+t*10),Fr%,PSET:F7(ASC(f$(t,t1))-97,0)=t1:F7(ASC(f$(t,t1))-97,1)=t:za=za+1 IF f$(t,t1)="8" THEN PUT(110+t1*20,10+t*10),Gi%,PSET we4: NEXT t1 NEXT t F7(za,0)=F7(0,0):F7(za,1)=F7(0,1) PUT(110+xp*20,10+yp*10),P0%,PSET RETURN mu: RESTORE mu SOUND WAIT FOR t=1 TO 12 READ Freq,Dauer SOUND Freq,Dauer*50 NEXT t RETURN DATA 261,.125,349,.18,392,.065,440,.125,349,.125,392,.25,523,.25 DATA 392,.18,523,.065,470,.125,523,.125,349,.25 d1: RESTORE d1 FOR t=0 TO 7 READ pc(t) NEXT DATA .78,5.5,5.5,3.93,3.93,2.36,2.36,.78 RETURN Spielfelder: IF lv(pl)=6 THEN GOSUB lfer:dex1=0:RETURN ON lv(pl) GOTO Feld1,Feld2,Feld3,Feld4,Feld5 Feld1: pil=211:gs=2 RESTORE Feld1 GOSUB Lesen RETURN DATA 1111111111111111111111111 DATA 1240000000000000000300021 DATA 1011111111111011111111101 DATA 1000000000000000000000001 DATA 1011111110111111101111101 DATA 1001000100010001000100001 DATA 1000010001000100010001001 DATA 1111111111101111111111111 DATA 1111111100000001111111111 DATA 1101111101101101111110111 DATA 1101110001100001111110111 DATA 1100110110001101111110011 DATA 1110000000000000000001011 DATA 1110111011101110111011011 DATA 1100111000001110000000011 DATA 1101111110111111111110111 DATA 1100000000111111011100021 DATA 1111111110111111000011111 DATA 1010101010101010101010101 DATA 1000000000000000000000021 DATA 1111111111111111111111111 Feld3: pil=295:gs=1 LINE(110,10)-(129,20),6,bf LINE(110,15)-(118,20),2,b LINE(119,10)-(129,15),2,b PAINT(117,19),2,2 PAINT(120,11),2,2 GET(110,10)-(129,20),W% RESTORE Feld3 GOSUB Lesen RETURN DATA 1111111111111111111111111 DATA 1000000000000000000000001 DATA 1000000000000000000000001 DATA 1300000000777770000000001 DATA 1000000077777777700000001 DATA 1000000777777777770000001 DATA 1000000777777777770000001 DATA 1000000777777777770000001 DATA 1000000775577755770000001 DATA 1000000775577755770000001 DATA 1000000775577755770000001 DATA 1000000777777777770000001 DATA 1000000777777777770000001 DATA 1000000777777777770000001 DATA 1000000777777777770000001 DATA 1000000770777770770000001 DATA 1000000700077700070000001 DATA 1000000700007000070000001 DATA 1000000000000000000000001 DATA 1000000000004000000000001 DATA 1111111111111111111111111 Feld2: pil=208:gs=1 RESTORE Feld2 GOSUB Lesen RETURN DATA 1111111111111111111111111 DATA 1000000000000000000000001 DATA 1011111111101011111111101 DATA 1000001210001000121000001 DATA 1110101110111110111010111 DATA 1000100000000000000010001 DATA 1011101111101011111011101 DATA 1000000000001000000000001 DATA 1111101110111110111011111 DATA 5555101210000030121015555 DATA 1111101110110110111011111 DATA 5555101210000000121015555 DATA 1111101211104011121011111 DATA 1000001210001000121000001 DATA 1011101110111110111011101 DATA 1000000000000000000000001 DATA 1011101111101011111011101 DATA 1011101111101011111011101 DATA 1000000000001000000000001 DATA 1111111111111111111111111 DATA 5555555555555555555555555 Feld4: RESTORE Feld4 pil=196:gs=1 GOSUB Lesen RETURN DATA 1111111111111111111111111 DATA 1000000000000000000000001 DATA 15555555555535555555555a1 DATA 1000111111111111111100001 DATA 1222100000000000000122221 DATA 1000100111011101110100001 DATA 12221000000b0000000122221 DATA 1000100111011101110100001 DATA 1222100000000000000122221 DATA 1000111111111111111100001 DATA 1555552555555555525555551 DATA 1000111110000001111100001 DATA 1000010001004010001000001 DATA 1555551000100100015555551 DATA 1555555100011000155555551 DATA 15555551002c2000155555551 DATA 1555551000011000015555551 DATA 1555510000100100001555551 DATA 1555111111000011111155551 DATA 1000000200000000020000001 DATA 1111111111111111111111111 Feld5: pil=355 RESTORE Feld5:GOSUB Lesen RETURN DATA 1111111111111111111111111 DATA 1a00000000003000000000001 DATA 1000000000101000000000001 DATA 1000000000101000000000001 DATA 1000000000101000000000001 DATA 1040000000000000000000001 DATA 1000008888888888888880001 DATA 1888888888888888888888881 DATA 1000000000000000000000001 DATA 1000000000100010000000001 DATA 1000100000001000000000001 DATA 1000000000100000888888111 DATA 10b00000100000008000088c1 DATA 1000000000000000800000111 DATA 1000000000001000800000001 DATA 1000000000000000800000001 DATA 1000001000000000800000001 DATA 1000000000000000800000001 DATA 1000000000000000888888881 DATA 1000000000000000000000001 DATA 1111111111111111111111111 laden: IF nam1$="" THEN GOSUB Eingabe IF nam$="n" THEN lad=0:RETURN na3$=STR$(lv(pl)):IF na3$=" 0" THEN na3$=" 1" nam1$=nam$+na3$ lad=1 GOSUB Datex IF dex=0 THEN IF lv(pl)>1 THEN GOSUB lfer:RETURN IF dex=0 THEN KILL nam1$:nam1$="":GOTO laden CLOSE 1 OPEN nam1$ FOR INPUT AS 1 FOR t1=0 TO 20 FOR t=0 TO 24 INPUT#1,f$(t1,t) NEXT NEXT INPUT#1,pil CLOSE 1 xp=2:yp=2 pil=pil+1 RETURN hisco: CLS OPEN "hi" FOR INPUT AS 1 FOR t=0 TO 9 INPUT#1,a$(t) hi(t)=VAL(LEFT$(a$(t),8)) NEXT CLOSE 1 a$(10)=RIGHT$(STR$(sc(pl)),LEN(STR$(sc(pl)))-1) hi(10)=VAL(LEFT$(a$(10),8)) FOR t1=0 TO 10 hiz(t1)=hi(0):az$(t1)=a$(0):t2=0 FOR t=1 TO 11 IF hi(t-1)>hiz(t1) THEN hiz(t1)=hi(t-1):az$(t1)=a$(t-1):t2=t-1:IF t=11 THEN pl1=t1 NEXT hi(t2)=-100000 NEXT t1 LOCATE 3,20:PRINT "HIGH-SCORE-LISTE" FOR t=0 TO 10 LOCATE 5+2*t,20 PRINT az$(t) NEXT IF sc(pl)=0 THEN LOCATE 25,20:PRINT" " IF pl1=10 AND sc(pl)<>0 THEN LOCATE 25,28:PRINT "Spieler ";pl IF pl1<10 THEN LOCATE 5+2*pl1,28:INPUT na$:na$=LEFT$(na$,20) d$=" " IF LEN(STR$(sc(pl)))<8 THEN az$(pl1)=STR$(sc(pl))+LEFT$(d$,9-LEN(STR$(sc(pl))))+na$ IF pl1<10 THEN OPEN "hi" FOR OUTPUT AS 1 FOR t=0 TO 9 PRINT#1,az$(t) NEXT CLOSE 1 END IF WHILE STRIG(3)<>-1:WEND RETURN Pb: CLEAR,30000,2000 SCREEN 1,640,240,3,2 WINDOW 3,"PAC IS BACK",,0,1 l(1)=5:l(2)=5:a=69:gs=1 DIM f$(20,24),f2$(20,24):DIM pc(7) DIM W%(a),p%(a),g%(a),Pi%(a),l%(a),Fr%(a),Gi%(a) DIM P0%(a),P1%(a),P2%(a),P3%(a),F7(14,1) pp(1)=4:pp(2)=12:pli(1)=6:pli(2)=14:l$="Leben:":p$="Punkte:" ON TIMER(10) GOSUB f1 GOSUB mu GOSUB M1 GOSUB fd GOSUB f1 GOTO Tb fd: RESTORE fd FOR t=0 TO 7 READ t1,t2,t3:PALETTE t,t1/10,t2/10,t3/10 NEXT DATA 3,9,3,10,10,10,4,4,4,6,1,1,0,0,0,9,9,1,8,2,3,8,7,6 RETURN M1: MENU 1,0,1,"Start" MENU 1,1,1," 1 Spieler" MENU 1,2,1," 2 Spieler" MENU 2,0,1,"ENDE" MENU 2,1,1,"QUIT" MENU 3,0,1,"LADEN" MENU 3,1,1,"Levels laden" MENU 4,0,1,"HI-SCO-LISTE" MENU 4,1,1,"Mache Hi-Sco-Liste" RETURN M2: M=MENU(0) IF M=1 THEN IF MENU(1)=1 THEN sp=1:l(2)=0:lv(1)=1:GOSUB An IF MENU(1)=2 THEN sp=2:lv(1)=1:lv(2)=1:GOSUB An END IF IF M=2 THEN MENU RESET:SCREEN CLOSE 1:END IF M=3 THEN ld=1:nam1$="" IF M=4 THEN GOSUB Hiscogen RETURN Bi: CLS CIRCLE(20,20),8,3,,,0.5 CIRCLE(20,20),5,3,,,0.3 PAINT(20,20),3,3 PAINT(12,20),6,3 GET(11,15)-(29,25),Pi% CLS LINE(12,145)-(31,155),7,bf FOR t=1 TO 10 LINE(20+t,145)-(31-t,155),2 NEXT GET(12,145)-(31,155),W% CLS CIRCLE(20,150),4,5 PAINT(20,150),5,5 GET(12,145)-(31,155),p% CLS CIRCLE(22,148),6,6,-6.28,-3.14 PAINT(22,146),6,6 LINE(16,148)-(16,155),6 LINE(28,148)-(28,155),6 LINE(16,155)-(19,154),6 LINE-(21,155),6 LINE-(24,154),6 LINE-(27,155),6 PAINT(22,149),6,6 CIRCLE(19,150),2,1,,,0.6 CIRCLE(25,150),2,1,,,0.6 PAINT(25,150),1,1 PAINT(19,150),1,1 PSET(19,150),0:PSET(20,150),0 PSET(25,150),0:PSET(24,150),0 GET(12,145)-(31,155),g% CLS GET(12,145)-(31,155),l% CLS LINE(12,145)-(31,155),0,b LINE(14,147)-(29,153),0,b PAINT(13,146),0,0 LINE(19,149)-(24,151),0,bf GET(12,145)-(31,155),Fr% CLS LINE(12,145)-(31,155),6,bf CIRCLE(17,150),3,4,,,0.7 PAINT(17,150),4,4 CIRCLE(26,150),3,4,,,0.7 PAINT(26,150),4,4 GET(12,145)-(31,155),Gi% CLS GOSUB d1 FOR t=0 TO 6 STEP 2 CIRCLE(22,150),10,5,-pc(t),-pc(t+1),0.5 IF t<> 6 THEN PAINT(23,146),5,5 ELSE PAINT(18,150),5,5 END IF IF t=0 OR t=4 THEN CIRCLE(23,146),2,6 :ELSE CIRCLE(17,150),2,6 IF t=0 THEN GET(12,145)-(31,155),P0% IF t=2 THEN GET(12,145)-(31,155),P1% IF t=4 THEN GET(12,145)-(31,155),P2% IF t=6 THEN GET(12,145)-(31,155),P3% CLS NEXT t RETURN P1: FOR t1=0 TO 90 STEP 30 FOR t=12 TO 622 STEP 60 PUT(t,145+t1),P0%,PSET NEXT t NEXT t1 RETURN An: IF l(1)=0 AND l(2)=0 THEN sc(1)=0:sc(2)=0:l(1)=5:l(2)=5:lv(1)=0:lv(2)=0:GOSUB hisco:GOTO Tb IF pl=1 THEN pl=2 :ELSE pl=1 IF sp=1 THEN pl=1 IF l(1)=0 THEN pl=2 IF l(2)=0 THEN pl=1 SOUND RESUME a=4:FOR t1=1 TO 2 FOR t=0 TO 250 STEP a LINE(10,t)-(640,t),4 NEXT t FOR t=0 TO 640 STEP a LINE(t,10)-(t,250),4 NEXT t a=2:NEXT t1 CLS LOCATE 2,1:PRINT"Spieler 1" LOCATE 4,1:PRINT p$;sc(1) LOCATE 6,1:PRINT l$;l(1) LOCATE 10,1:PRINT"Spieler 2" LOCATE 12,1:PRINT p$;sc(2) LOCATE 14,1:PRINT l$;l(2) LOCATE 1,35:PRINT sp"Spieler-Modus" IF lad=0 THEN GOSUB Spielfelder ELSE GOSUB laden IF dex=0 THEN l(pl)=1:GOTO ph GOSUB Entwickler END IF IF dex1=1 THEN dex1=0:l(pl)=1:GOTO ph LOCATE 20,1:PRINT"PRESS BUTTON" WHILE STRIG(3)<>-1 WEND LOCATE 20,1:PRINT" " TIMER ON GOTO St Eingabe: LOCATE 16,1:INPUT "Name";nam$ IF nam$="" THEN GOTO Eingabe LOCATE 16,1:PRINT STRING$(80," ") RETURN Hiscogen: OPEN "Hi" FOR OUTPUT AS 1 FOR t=0 TO 9 a$=STR$(1000*t)+" "+"Leuolya-Soft" PRINT#1,a$ NEXT CLOSE 1 RETURN Datex: CLOSE 1 OPEN nam1$ FOR APPEND AS 1 IF LOF(1)<=0 THEN dex=0 :ELSE dex=1 CLOSE 1 RETURN lfer: CLS LOCATE 10,30:PRINT"Alle Levels geschafft" LOCATE 12,30:PRINT"Bonus=Leben*2500" sc(pl)=sc(pl)+l(pl)*2500 LOCATE 14,30:PRINT sc(pl) WHILE STRIG(3)<>-1:WEND RETURN